package com.smfx.yxt.service;

import java.util.List;

import com.smfx.yxt.model.InterestCourseInfo;
import com.smfx.yxt.model.InterestCourseStudentSign;
import com.smfx.yxt.model.ReqInterestCourseChange;
import com.smfx.yxt.page.Page;
import com.smfx.yxt.reqVo.BaseQueryVO;
import com.smfx.yxt.reqVo.InterestCourseQueryVO;
import com.smfx.yxt.reqVo.InterestCourseReqVO;
import com.smfx.yxt.reqVo.ReqInterestCourseQueryVO;
import com.smfx.yxt.view.InterestCourseStudentSignView;
import com.smfx.yxt.view.InterestCourseView;
import com.smfx.yxt.view.ReqInterestCourseView;

public interface IInterestCourseInfoService {

	int insertSelective(InterestCourseInfo record);

    InterestCourseInfo selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(InterestCourseInfo record);

    List<InterestCourseInfo> selectList(BaseQueryVO vo);
    
    List<InterestCourseView> selectViewListForClass(BaseQueryVO vo);
    
    List<InterestCourseView> selectViewList(BaseQueryVO vo);
    
    InterestCourseView selectViewById(BaseQueryVO vo);
    
    int addAndUpdate(InterestCourseReqVO vo);
    
    List<InterestCourseStudentSignView> selectSignedListForClass(InterestCourseQueryVO vo);
    
    List<InterestCourseStudentSignView> selectNoSignListForClass(InterestCourseQueryVO vo);
    
    InterestCourseStudentSignView selectSignedCourseForStudent(InterestCourseQueryVO vo);
    
    int insertSign(InterestCourseStudentSign record);
    
    int updateChangeSign(InterestCourseStudentSign record);
    
    int addChangeCourseReqByParent(ReqInterestCourseChange record);
    
    int addChangeCourseReqByTeacher(ReqInterestCourseChange record);
    
    void updateAuditByClassTeacher(ReqInterestCourseChange record);
    
    List<ReqInterestCourseView> selectPendingReqList(ReqInterestCourseQueryVO vo);
    
    List<ReqInterestCourseView> selectAuditedReqList(Page<ReqInterestCourseView> page);
    
    List<InterestCourseStudentSignView> selectSignListForParent(InterestCourseQueryVO vo);
    
    int updateStudentSignCourse(ReqInterestCourseChange record);
    
    boolean isFullForCourseId(BaseQueryVO vo);
    
    List<ReqInterestCourseView> selectListForParent(ReqInterestCourseQueryVO vo);
    
    int selectCountForStudent(ReqInterestCourseQueryVO vo);
    
    boolean isTeachingTeacher(Integer teacherId);
    
    List<InterestCourseView> selectViewForTeaching(BaseQueryVO vo);
    
    List<InterestCourseStudentSignView> selectSignListForTeachingByCourseId(InterestCourseQueryVO vo);
}
